Exploiting Commuting Operations in Parallelizing Serial Programs
نویسنده
چکیده
Two operations commute if the result of their execution is independent of the order in which they execute. Commuting operations can be executed concurrently provided they execute atomically on the objects they access. Statically recognizing commuting operations is of great interest because they increase the amount of concurrency a compiler can exploit. In this document we introduce commutativity analysis-a new technique for automatically parallelizing serial programs. We then conduct a feasibility study of existing scientiic applications as to the existence and exploitability of commuting operations. We study the commuting operations present in one such application-the Barnes-Hut hierarchical N-body algorithm. We then parallelize this application using knowledge of commuting operations and present performance results of the parallel code for a shared-memory multiprocessor.
منابع مشابه
Commutativity Analysis: A New Technique for Automatically Parallelizing Serial Programs
This paper introduces a new analysis technique, commutativity analysis, for automatically parallelizing programs written in sequential, imperative programming languages. Commutativity analysis aggregates both data and computation into larger grain units. It then analyzes the computation at this granularity to discover when pieces of the computation commute (i.e. generate the same result regardl...
متن کاملAutomatically Parallelizing Serial Programs Using Commutativity Analysis
This paper introduces a new analysis technique, commutativity analysis, for automatically parallelizing programs written in a sequential, imperative programming language. Existing parallelizing compilers preserve the data dependences of the original serial program. They analyze the program at the level of individual reads and writes to single words of memory to generate parallel code that prese...
متن کاملGraph-Based Divide and Conquer Method for Parallelizing Spatial Operations on Vector Data
In computer science, dependence analysis determines whether or not it is safe to parallelize statements in programs. In dealing with the data-intensive and computationally intensive spatial operations in processing massive volumes of geometric features, this dependence can be well utilized for exploiting the parallelism. In this paper, we propose a graph-based divide and conquer method for para...
متن کاملOn the performance of the Python programming language for serial and parallel scientific computations
This article addresses the performance of scientific applications that use the Python programming language. First, we investigate several techniques for improving the computational efficiency of serial Python codes. Then, we discuss the basic programming techniques in Python for parallelizing serial scientific applications. It is shown that an efficient implementation of the array-related opera...
متن کاملExploiting Implicit Parallelism in Dynamic Array Programming
We have built an interpreter for the array programming language J. The interpreter exploits implicit data parallelism in the language to achieve good parallel speedups on a variety of benchmark applications. Many array programming languages operate on entire arrays without the need to write loops. Writing without loops simplifies the programs. Array programs without loops allow an interpreter t...
متن کامل